1. The Field of the Invention
The present invention relates to computing technology; and more specifically, to mechanisms for serializing and deserializing data objects by serializing and deserializing only abstract representations of data as specified by a data contract.
2. Background and Related Art
Computing technology has transformed the way we work and play. Computing systems now take a wide variety of forms including desktop computers, laptop computers, tablet PCs, Personal Digital Assistants (PDAs), household devices and the like. The functionality of the computing system is directed by software. Software is a sequence of computer-executable instructions that, when executed, causes the computing system to perform the functionality.
Object-oriented programming has developed as a mechanism to organize the authoring of software using logical units called objects that interact with one another. An object comprises one or more data fields that are representative of properties of the object, and zero or more methods (or pointers to methods) that include computer-executable code that relate to behavior of the object. Objects may interact by calling a method that is exposed by another object. Such objects may also be referred to herein as “data objects” as pointers to methods and computer-executable instructions that formulate the methods themselves may be broadly considered to be “data”.
When in-memory, the data object is a collection of associated data fields and methods. However, it is often necessary to write or transmit the data object. In order to write or transmit a data object, the in-memory representation of the data object is serialized into a sequence of bytes that conforms with a serialization format. Similarly, the data object may be deserialized into an in-memory representation when reading or otherwise receiving the serialized data object.
Conventionally, the entire data object is typically serialized and deserialized. Accordingly, serialization and deserialization processes are often customized for each data object classification, thereby requiring significant resources for authoring, storing and processing serialization mechanisms for each potential object type. For example, Java objects may have one serialization mechanism, while WINDOWS® objects may have another serialization mechanism. Different serialization mechanisms may also be used for different serialization formats as well. For example, binary and XML may each have their own serialization mechanism. Furthermore, the entire data object may be larger than the actual abstract data of interest, thereby further wasting processing, memory and (if transmitted) network bandwidth resources.
Accordingly, what would be advantageous are serialization and deserialization mechanisms that are abstracted from the data object type and serialization format, and that do not require the serialization and deserialization of the entire data object.